package com.zm.blog.handle;

/**
 * @Author: Sister Xiao Ming
 * @Description: 自定义运行时异常类，用于业务逻辑中的错误处理
 */
public class BlogRuntimeException extends RuntimeException{

    // 添加序列化ID，满足Serializable接口规范
    private static final long serialVersionUID = 20230615L;

    // 移除冗余的msg字段，直接使用父类的message
    // 父类RuntimeException已提供getMessage()方法

    /**
     * 默认构造函数
     */
    public BlogRuntimeException() {
        super();
    }

    /**
     * 带错误信息的构造函数
     * @param message 错误信息
     */
    public BlogRuntimeException(String message) {
        super(message);
    }

    /**
     * 带原因的构造函数
     * @param cause 原始异常
     */
    public BlogRuntimeException(Throwable cause) {
        super(cause);
    }

    /**
     * 带错误信息和原因的构造函数
     * @param message 错误信息
     * @param cause 原始异常
     */
    public BlogRuntimeException(String message, Throwable cause) {
        super(message, cause);
    }

    /**
     * 获取错误信息（兼容原有接口）
     * @return 错误信息字符串
     */
    public String getMsg() {
        return getMessage();
    }

    /**
     * 快速创建异常的静态工厂方法
     * @param message 错误信息
     * @return 异常实例
     */
    public static BlogRuntimeException of (String message) {
        return new BlogRuntimeException(message);
    }

    /**
     * 快速创建异常的静态工厂方法
     *
     * @param cause 原始异常
     * @return 异常实例
     */
    public static BlogRuntimeException of(Throwable cause) {
        return new BlogRuntimeException(cause);
    }

    /**
     * 快速创建异常的静态工厂方法
     *
     * @param message 错误信息
     * @param cause 原始异常
     * @return 异常实例
     */
    public static BlogRuntimeException of(String message, Throwable cause) {
        return new BlogRuntimeException(message, cause);
    }

}
